home *** CD-ROM | disk | FTP | other *** search
/ Inside Mac Games Volume 5 #3 / IMG 46 Vol 5-3.iso / More Goodies / More For Your Game / Dark Forces / Documentation ƒ / DF Editors' Guide / GOL Guide < prev    next >
Text File  |  1996-08-03  |  13KB  |  382 lines

  1.  
  2.  
  3. [Best viewed with COURIER-10]
  4.  
  5.  
  6.  
  7.  
  8.               …ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕª
  9.               ∫ DARK FORCES MISSION GOALS & MISSION COMPLETION  ∫
  10.               ∫                   version 2                     ∫
  11.               ∫  by Jereth Kok (kokjm@stmichaels.vic.edu.au)    ∫
  12.               "ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕº
  13.  
  14.  
  15. Acknowledgements:
  16. -----------------
  17. LucasArts Entertainment Company --      creators of Dark Forces
  18. Yves Borckmans                  --      creator of DFUSE & WDFUSE
  19. Ben & Pat McBride               --      makers of the DFUSE tutorials
  20.  
  21.  
  22.  
  23. Introduction
  24. ------------
  25. This file (DFGOALS.TXT) contains a full formal explanation on how to create 
  26. mission goals in Dark Forces. Beginners should use it as a learning tool, 
  27. while people experienced with editing levels can use it as a reference.
  28.  
  29. I assume that anyone reading this file is a user of Yves Borckmans' DFUSE  
  30. of WDFUSE. 
  31.  
  32. Note: Anything significant which I've added in version 2 is marked by [NEW]
  33.  
  34.  
  35. CONTENTS
  36. --------
  37. 1. Overview
  38. 2. The GOL file
  39. 3. [NEW] Completion elevators
  40. 4. Object GOALS
  41. 5. Trigger GOALS
  42. 6. Special trigger goals
  43. 7. Boss goals!
  44.  
  45.  
  46. 1. GOAL OVERVIEW
  47. ----------------
  48. A mission goal is quite self explanatory. Each Dark Forces level has one or 
  49. more objectives that must be completed in order to move on to the next level.
  50. Each time a goal is completed, the objective screen of your PDA will turn 
  51. that goal from green to yellow to show that the goal has been completed.
  52. There are two types of goals - object goals and trigger goals.
  53.  
  54. [NEW]  Mission goals/completion is handled jointly by the level GOL file and 
  55. INF file. While the GOL file handles the objective screen of your PDA, the 
  56. INF file tells the GOL file what to do, allows mission completion, and handles
  57. trigger goals.
  58.  
  59. [NEW]  The PDA objective screens are located in the DELT files contained in
  60. DFBRIEF.LFD. Using the WDFUSE LFD file manager, you can extract the DELTs 
  61. from DFBRIEF.LFD and convert them to BMPs so that you can edit them. After 
  62. that it's only a matter of re-converting them and replacing them in the 
  63. DFBRIEF.LFD
  64.  
  65.  
  66. 2. THE GOL FILE
  67. ---------------
  68.  
  69. This is the entry for an object goal:
  70.  
  71. | GOAL: [num]     ITEM: [num]
  72.  
  73. GOAL: [num]     --      This is the number of the goal starting from 0
  74.                         and ascending in integers. It corresponds
  75.                         with the objective display in the PDA.
  76.  
  77. ITEM: [num]     --      This corresponds with a goal object. Here are the
  78.                         possible goal objects and their num:
  79.  
  80.                         Object -                Num -                       
  81.  
  82.                         IDPLANS.WAX             0
  83.                         IPHRIK.FME              1
  84.                         INAVA.WAX               2
  85.                         IDATA.FME               4
  86.                         IDTGUN.FME              5
  87.                         IPILE.FME               6
  88.  
  89. The logics of the above goal objects will fire the appropriate ITEM: [num] to 
  90. show in the PDA that the goal object has been taken. [NEW]  Obviously, it is
  91. only possible to have one of each goal object in each level for this to work
  92. properly.
  93.  
  94.  
  95. This the entry for a trigger goal:
  96.  
  97. | GOAL: [num]     TRIG: [num]
  98.  
  99. GOAL: [num]     --      Same as for object goals.
  100.  
  101. TRIG: [num]     --      This corresponds with the "complete" message. 
  102.                         Depending on whether the "complete" message is sent
  103.                         by an elevator or trigger, it could take the form
  104.                         of either:
  105.                         
  106. |       message: [stop] [completion elevator] complete [num]
  107.                         
  108.                 **OR**
  109.                 
  110. |       client: [completion elevator]
  111. |       message: complete [num]
  112.                         
  113. The message will fire the TRIG: [num] to show in the PDA that the goal 
  114. trigger has been triggered.
  115.  
  116.  
  117. 3. [NEW] COMPLETION ELEVATORS
  118. -----------------------------
  119. The most important component of an INF file when creating goals is a 
  120. "completion elevator". This is an elevator which is moved to its next stop 
  121. each time a goal is completed, and finally reaches a "complete" stop when the
  122. mission is complete. This elevator should be called "COMPLETE" because, as 
  123. you'll soon see, object goal logics won't affect elevators with any other 
  124. name. It is also usually a dummy sector - ie. inaccessible to the PLAYER.
  125.  
  126. Here is an example of a completion elevator.
  127.  
  128.  
  129. | item: sector    name: complete
  130. |         seq
  131. |                 class: elevator move_floor
  132. |                 event_mask: 0
  133. |                 speed: 0
  134. |                 stop: 0 hold    
  135. |                 stop: 1 hold  /* arrives here when 1st goal is completed */
  136. |                 stop: 2 hold  /* arrives here when 2nd goal is completed */
  137. |                 ......
  138. |                 stop: n complete      /* arrives here when final goal is 
  139. |                                               completed */
  140. |         seqend
  141.         
  142.  
  143. It may be necessary to create "sub-completion" elevators, usually when you 
  144. want a trigger goal to be completed only after other goals are completed
  145. first. For example, all the levels where you must return to the landing pad 
  146. make use of this. Otherwise, all you'd need to do to complete these levels
  147. would be to leave the sector you start in, the walk back in several times
  148. until the completion elevator has reached its complete stop! :-) 
  149.  
  150. A sub-completion elevator would have its "master: off" at the start of the 
  151. level. Completing all of the other goals would turn "master: on". Then, when
  152. you set off the trigger by entering the landing pad sector, the sub-completion
  153. elevator would move to a stop where a message is sent to the completion 
  154. elevator to move it to its complete stop.
  155.  
  156.  
  157.  
  158. 4. OBJECT GOALS
  159. ---------------
  160.  
  161. These are the possible objects that can be used as goals:
  162.  
  163. Object          Num
  164.  
  165. IDPLANS.WAX     0               (Death Star Plans)
  166. IPHRIK.FME      1               (Phrik metal)
  167. INAVA.WAX       2               (Nava Card)
  168. IDATA.FME       4               (Data tapes)
  169. IDTGUN.FME      5               (Broken Dark Trooper weapon)
  170. IPILE.FME       6               (Your gear)
  171.  
  172.  
  173. Important: these MUST have their proper logic in order to be a goal. Their
  174. logics serve two purposes when the objects are picked up:
  175.         1) They fire the appropriate "ITEM: [num]" in the GOL file.
  176.         2) They move the completion elevator (this MUST be called "complete")
  177.            to it's next stop.
  178.  
  179.  
  180.  
  181. 5. TRIGGER GOALS
  182. ----------------
  183.  
  184. To make a trigger goal, you will need the following in the trigger's INF file
  185. sequence:
  186.  
  187. | client: [completion elevator]
  188. | message: complete [num]
  189.  
  190.  
  191. If you instead prefer to use an elevator to send the complete message:
  192.  
  193. | message: [stop] [completion elevator] complete [num]
  194.  
  195.  
  196. The "complete" message serves two purposes:
  197.         1) It fires the appropriate "TRIG: [num]" in the GOL file.
  198.         2) It moves [completion elevator] to its next stop.
  199.  
  200.  
  201.  
  202. 6. SPECIAL TRIGGER GOALS
  203. ------------------------
  204. These are two special cases of trigger goals. Here's how to make them...
  205.  
  206.  
  207. 6a. Tracking device
  208. -------------------
  209. This is found in Ramses Hed. This is what happens: the wall with the tracking 
  210. device texture is in a small alcove sector. This sector is a both an 
  211. elevator scroll_wall, and a trigger operated by nudging from the outside which 
  212. causes a dummy elevator to move to its next stop. At its next stop, the dummy 
  213. elevator moves the sector with the tracking device texture to its next stop
  214. at speed: 0 (instantaneous) so it appears as if Kyle has placed the tracking
  215. device on the wall. At this stop, the dummy sector also sends a "complete" 
  216. message to the completion elevator.  
  217.  
  218.  
  219. Here's how to create this same effect in your level:
  220.  
  221. Firstly, create a small rectangular sector with height 8. Two
  222. sides should have a width of 8 and the other two sides should have a very
  223. small width (1 or 2). Adjoin this to the desired sector so it is an alcove
  224. at Kyle's eye level. Call this sector "track_dev". Place texture IATRKDEV.BM
  225. on the wall opposite the wall with the adjoin. Give this wall flag 1 bit 128
  226. (allow scroll mid tx). Add a dummy sector and call it "dummy". Now add the 
  227. following items to the INF file of the level (add 2 to"items #").
  228.  
  229.  
  230. | item: sector    name: track_dev
  231. |         seq
  232. |                 class: trigger
  233. |                 event_mask: 32
  234. |                 client: dummy
  235. |                 
  236. |                 class: elevator scroll_wall
  237. |                 event_mask: 0
  238. |                 speed: 0
  239. |                 angle: 0
  240. |                 stop: 0 hold
  241. |                 stop: 64 terminate
  242. |         seqend
  243. | item: sector    name: dummy
  244. |         seq
  245. |                 class: elevator move_floor
  246. |                 event_mask: 0
  247. |                 stop: 0 hold
  248. |                 stop: 1 0
  249. |                 message: 1 track_dev next_stop
  250. |                 message: 1 [completion elevator] complete [num]
  251. |                 stop: 2 terminate
  252. |                 speed: 0
  253. |         seqend
  254.  
  255.  
  256.  
  257. 6b. Sequencer charges
  258. ---------------------
  259. These are found in the Gromas Mines, Robotics Facility and Arc Hammer. The 
  260. concept is the same as the tracking device, except that the sequencer charge
  261. texture scrolls between 2 stops after being activated.
  262.  
  263.  
  264. Here's what to do:
  265.  
  266. Firstly, create a small rectangular sector with height 8. Two
  267. sides should have a width of 8 and the other two sides should have a very
  268. small width (1 or 2). Adjoin this to the desired sector so it is an alcove
  269. at Kyle's eye level. Call this sector "seq_charge". Place texture IWASEQUE.BM
  270. on the wall opposite the wall with the adjoin. Give this wall flag 1 bit 128
  271. (allow scroll mid tx). Add a dummy sector and call it "dummy". Add another
  272. dummy sector and call it "oscillator". Add the following to the INF file
  273. (add 3 to "items #").
  274.  
  275.  
  276. | item: sector    name: seq_charge
  277. |         seq
  278. |                 class: trigger
  279. |                 event_mask: 32
  280. |                 client: dummy
  281. |                 class: elevator scroll_wall
  282. |                 event_mask: 0
  283. |                 speed: 0
  284. |                 angle: 0
  285. |                 stop: 192 hold
  286. |                 stop: 128 hold
  287. |                 stop: 64 hold
  288. |         seqend
  289. | item: sector    name: dummy
  290. |         seq
  291. |                 class: elevator move_floor
  292. |                 event_mask: 0
  293. |                 speed: 0
  294. |                 stop: 0 hold
  295. |                 stop: 1 0
  296. |                 message: 1 oscillator master_on
  297. |                 message: 1 [completion elevator] complete [num]
  298. |                 stop: 2 terminate
  299. |         seqend
  300. | item: sector    name: oscillator
  301. |         seq
  302. |                 class: elevator move_floor
  303. |                 event_mask: 0
  304. |                 master: off
  305. |                 speed: 0
  306. |                 stop: 0 0.5
  307. |                 message: 0 seq_charge goto_stop 1
  308. |                 stop: 1 0.5
  309. |                 message: 1 seq_charge goto_stop 2
  310. |         seqend
  311.  
  312.  
  313.  
  314.  
  315. 7. BOSS GOALS
  316. -------------
  317. This is actually a little invention of mine - it's not used in any of the 
  318. original levels. A boss goal is an objective completed by killing an enemy. 
  319. This could be very handy in a "Terminate Boba Fett" or "Terminate General 
  320. Mohc" level!
  321.  
  322.  
  323. The following can be used as boss goals:
  324.  
  325. BOBAFETT.WAX            (What do you think?!?)
  326. KELL.WAX                (Kell dragon)
  327. PHASE1.WAX              (Phase 1 Dark Trooper)
  328. PHASE2.WAX              (Phase 2 Dark Trooper)
  329. PHASE3X.WAX             (Mohc)
  330.  
  331.  
  332. The principle behind this is similar to goal objects like the Death Star
  333. Plans. A certain element in the sequence of one of these objects will cause
  334. an elevator called "boss", (or "mohc" in the case of PHASE3X.WAX) to move
  335. to its next stop, where a complete message is sent to the completion elevator.
  336. A boss goal is actually a trigger goal in disguise.
  337.  
  338.  
  339. This is what you need to do to turn one of these sprites into a mission
  340. objective:
  341.  
  342. Edit the .O file of the level and find the sprite that you want to kill
  343. in order to complete the mission. Add this to its sequence (the stuff between
  344. "Seq" and "Seqend"):
  345.  
  346. | BOSS:   TRUE
  347.  
  348. Now edit your level. Add a dummy sector called "boss" if your
  349. boss goal is Boba Fett, a Kell dragon, a Phase 1 Dark Trooper or a Phase 2
  350. Dark Trooper. If the boss goal is Mohc, call the dummy sector "mohc". 
  351.  
  352. Add this to the INF file of the level (add 1 to "items #"):
  353.  
  354. | item: sector    name: boss/mohc
  355. |         seq
  356. |                 class: elevator move_floor                
  357. |                 event_mask: 0
  358. |                 stop: 0 hold
  359. |                 stop: 1 0
  360. |                 message: 1 [completion elevator] complete [num]
  361. |                 stop: 2 terminate
  362. |                 speed: 0
  363. |         seqend
  364.  
  365.  
  366. ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ
  367.  
  368. That's all folks! If you have anything to add to this file, if you want
  369. to correct something I have wrong, comment or ask a question, mail me at:
  370.  
  371. kokjm@stmichaels.vic.edu.au
  372.  
  373. Any additions or corrections will be put in an updated version of this file. 
  374. Please include your name and e-mail address so that I can credit you.
  375.  
  376.  
  377. May the Force be With You.
  378.